<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>C-Control</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/C-Control"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-C-Control rootpage-C-Control skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">C-Control</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p>Das <a href="Mikrocontroller" title="Mikrocontroller">Mikrocontrollermodul</a> <b>C-Control</b> wird vom Elektronikunternehmen <a href="Conrad_Electronic" title="Conrad Electronic">Conrad Electronic</a> produziert und vermarktet. Die seit 1994 produzierte Mikrocontrollerreihe wird heute in verschiedenen Varianten vertrieben. Neben einem auf einem <a href="Motorola" class="mw-redirect" title="Motorola">Motorola</a> (seit 2004 <a href="Freescale_Semiconductor" title="Freescale Semiconductor">Freescale</a>) <a href="68HC05" class="mw-redirect" title="68HC05">MC68HC05B6</a> basierenden Controller in einer Standard- und Kompaktausführung (M Unit), wird seit Mitte 2004 auch die Nachfolgegeneration der C-Control I M-Unit in Form der C-Control I M-Unit 2.0 <a href="68HC08" title="68HC08">68HC908GT16</a> und C-Control I Micro <a href="68HC08" title="68HC08">68HC908QT4CP</a> verkauft. Eine Neuentwicklung stellt die seit Ende 2000 erhältliche C-Control II dar, die Mitte 2005 durch eine dritte C-Control-Version, die C-Control Pro, ergänzt wurde.
</p><p>Die C-Control wurde im deutschsprachigen Raum vor allem wegen der einfachen Handhabung, dem zahlreichen Zubehör und dem großen Angebot an deutschsprachiger Literatur verwendet. Per 2021 wird das System nicht mehr aktiv vermarktet, die letzte Softwareaktualisierung der C-Control-Pro-IDE war 2013.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Eine vergleichbare Plattform heute ist <a href="Arduino_(Plattform)" title="Arduino (Plattform)">Arduino</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Controller-Versionen">Controller-Versionen</h2></div>
<div class="mw-heading mw-heading3"><h3 id="C-Control_I">C-Control I</h3></div>
<div class="mw-heading mw-heading4"><h4 id="Version_1.x">Version 1.x</h4></div>
<p>Vor 1996 gab es eine C-Control I Version 1.0, die allerdings nicht mit den nach 1996 erschienen C-Control I V1.1-Versionen kompatibel ist.
1996 kam die C-Control I Version 1.1 auf den Markt, welche nun nicht nur in der grafischen Programmiersprache CCPLUS, sondern auch in dem BASIC-Dialekt CCBasic programmiert werden konnte.
</p><p>Die C-Control I Version 1.1 ist sowohl als „große“ C-Control I Main Unit, als C-Control I M-Unit und C-Control I Station verfügbar.
Gängige Kurzbezeichnungen für die C-Control I V1.1 sind „CC1“, „CC1 V1.1“.
</p><p>Die C-Control I M-Unit 1.1 ist nicht mehr erhältlich. Als Ersatz ist die C-Control I M-Unit 1.2 verfügbar.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Sie basiert jedoch auf der Hardware der C-Control I Version 2 und ist nicht 100 % kompatibel.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading4"><h4 id="Alternative_Controller">Alternative Controller</h4></div>
<p>Inzwischen wurden auch alternative Controller entwickelt, die zum Tokeninterpreter der C-Control I Version 1.1 kompatibel sind, so dass diese u. a. auch mit CCBasic programmiert werden können. Anfang 2004 wurde das CC1-OS-Project eingestellt. Das Projekt verfolgte das Ziel, die C-Control I zu erweitern und zu optimieren. Als weitere Alternativen stehen die in hohem Maße CCBasic-kompatiblen Open-Micro, Open-Mini, Open-Midi, Open-Macro und Open-Maxi von Dietmar Harlos, sowie die B-Control (basierend auf <a href="Atmel" title="Atmel">Atmel</a> <a href="Atmega32" class="mw-redirect" title="Atmega32">Atmega32</a>/128) von Martin Kaup zur Auswahl.
</p>
<div class="mw-heading mw-heading4"><h4 id="Version_2.x/1.2"><span id="Version_2.x.2F1.2"></span>Version 2.x/1.2</h4></div>
<div class="mw-heading mw-heading5"><h5 id="Standardausführung"><span id="Standardausf.C3.BChrung"></span>Standardausführung</h5></div>
<p>Seit Mitte 2004 ist auch die Nachfolgegeneration der C-Control I Version 1.1, die C-Control I Version 2.0, erhältlich. Ziel des neuen Controllers ist es, eine weitestgehende Kompatibilität zur alten C-Control I Version 1.1 zu halten. Neben der C-Control I M-Unit 2.0 wurde auch die C-Control I Micro veröffentlicht. Die Micro ist ein einzelner Chip, der ohne äußerliche Beschaltung lauffähig ist. Nach anfänglich fehlender Möglichkeit für den Anwender, eigene <a href="Assembler_(Informatik)" title="Assembler (Informatik)">Assembler-Routinen</a> zu erstellen, ist das mittlerweile mit Einschränkungen mit einem speziellen CCASM-<a href="Assembler_(Informatik)" title="Assembler (Informatik)">Assembler</a> auch für diese Controller möglich. Diese Einschränkungen bestehen in der Sperrung bestimmter OP-Codes und Ersetzen von OP-Codes durch Macros, die verhindern sollen, dass über Assemblercode aus auf das Betriebssystem zugegriffen und dieses ausgelesen werden kann. Weiterhin erfolgt eine „Signierung“ und Verschlüsselung der Assembler-Routinen, um zu verhindern, dass ein anderer als der CCASM eingesetzt werden kann.
</p><p>Die C-Control I Version 2 ist in den Ausführungen C-Control I M-Unit V2.0, C-Control I M-Unit V1.2, C-Control I Station V2.0, sowie C-Control Micro verfügbar.
</p><p>Verwendete Bezeichnungen, wie „M-Unit 2“, „M-Unit 2.0“, C-Control 2.0, führen oftmals zu einer Verwechslung mit der C-Control II, welche u. a. auch die offizielle Bezeichnungen „C-Control 2“ trägt.
</p><p>Da der verwendete Microcontroller vom Hersteller bereits abgekündigt wurde, ist das Ende der Lieferbarkeit dieser Standardversion absehbar.
</p>
<div class="mw-heading mw-heading5"><h5 id="Advanced-Ausführung"><span id="Advanced-Ausf.C3.BChrung"></span>Advanced-Ausführung</h5></div>
<p>Die C-Control I M-Unit Version 2.0 und C-Control I Station V2.0 sind seit 2008 zusätzlich in einer erweiterten Version erhältlich. Neben 22 kByte Programmspeicher und 240 Byte User-RAM unterstützen die sogenannten <i>Advanced</i>-Versionen 32-Bit-<a href="Gleitkomma" class="mw-redirect" title="Gleitkomma">Gleitkomma</a>-Arithmetik.
</p>
<div class="mw-heading mw-heading3"><h3 id="C-Control_II">C-Control II</h3></div>
<p>Zusätzlich gibt es seit Ende 2000 die C-Control II (auch C-Control 2 oder CC2 genannt) basierend auf dem <a href="Infineon" title="Infineon">Infineon</a>-16-<a href="Bit" title="Bit">Bit</a>-<a href="Mikrocontroller" title="Mikrocontroller">Mikrocontroller</a> <a href="C167" title="C167">C164CI</a>.
Die C-Control 2 hat mit der C-Control I nur den Namen gemeinsam. Durch das Multithreading, die vorhandene Möglichkeit der Stringverarbeitung, 32<a href="Bit" title="Bit">Bit</a> Long-<a href="Integer_(Datentyp)" title="Integer (Datentyp)">Integer</a>, sowie der 64-Bit-<a href="Gleitkommaarithmetik" class="mw-redirect" title="Gleitkommaarithmetik">Gleitkommaarithmetik</a> und den für einen <a href="Mikrocontroller" title="Mikrocontroller">Mikrocontroller</a> sehr großen Speicher (64 kB RAM, 512 kB Flash), ist die C-Control II weiterhin die umfangreichste Variante. Es können auch größere Assembler-Routinen (bis zu 192 kB des Flash) eingebunden werden.
</p><p>Die C-Control II ist in den Ausführungen C-Control II Main-Unit (auch CC2-Unit genannt) und C-Control II Station (auch CC2-Station genannt) verfügbar.
</p>
<div class="mw-heading mw-heading4"><h4 id="Alternative_Controller_2">Alternative Controller</h4></div>
<p>Da die C-Control II Unit seit Mitte 2018 nicht mehr vertrieben wird, ist als Nachfolger von CCTools das C164CI-Controller-Board entwickelt worden.
Das C164CI-Controller-Board ist pinkompatibel, basiert weiterhin auf den Controller SAK-C164CI-8EM und unterscheidet sich hauptsächlich in der Wahl aktuellerer Bauteile um die MCU.
So kommt statt zwei 8-Bit Bausteine mit je 32 kByte samt Logikansteuerung ein 16Bit-SRAM IC zum Einsatz. Statt 64 kByte RAM sind dadurch 128 kByte vorhanden.
</p>
<div class="mw-heading mw-heading3"><h3 id="C-Control_Pro">C-Control Pro</h3></div>
<p>2005 wurde die C-Control-Serie um die C-Control-PRO-Familie erweitert. Diese Units besitzen im Vergleich zur C-Control-I-Familie deutlich mehr Speicher und Hardwareressourcen. Ohne externe Erweiterungen sind 2 kB (MEGA32) bzw. ca. 2,6 kB (MEGA128) RAM, ca. 15 kB bzw. ca. 110 kB Flash für Anwenderprogramme, sowie 1 kB bzw. 2 kB EEProm-Speicher verfügbar. Die C-Control-PRO-Familie basiert auf den gleichnamigen RISC-Mikrocontrollern der <a href="Atmel_AVR" class="mw-redirect" title="Atmel AVR">AVR-Familie</a> von Atmel. Die MEGA128 bietet deutlich mehr I/O-Ressourcen als jede andere bisher erschienene C-Control, wenn keine externe RAM-Erweiterung genutzt wird. Die C-Control Pro bietet Multithreading, ähnlich wie die C-Control II. Die Programmierung kann in Compact-C oder Basic vorgenommen werden. Beide Programmiersprachen können gemischt werden, so kann ein Teil aus Compact-C bestehen und der andere Teil der Software aus Basic. Da es sich um ein modulares Programmiersystem handelt, können auch größere Projekte relativ einfach verwaltet werden. Universelle Module müssen, wie bereits bei der C-Control II und bei der C-Control I unter Basic++, nur einmal programmiert werden und können so wiederverwendet werden. Die C-Control-IDE enthält jedoch keinen Simulator, wie bei C-Control I und C-Control II, sondern besitzt stattdessen einen Hardware-<a href="Debugger" title="Debugger">Debugger</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Anwendungen">Anwendungen</h2></div>
<p>Mit der C-Control lassen sich einfache <a href="Automatisierung" title="Automatisierung">Automatisierungsvorgänge</a> für den privaten, aber auch semiprofessionellen Bereich realisieren. Durch die C-Control I M-Unit 2.0 wird eine im Vergleich zur Vorgängerversion 38 Mal höhere Ausführungsgeschwindigkeit erreicht. Auch der Umgang mit dem <a href="I%C2%B2C" title="I²C">I²C</a>-Bus, externen Komponenten oder LC-Displays wurde vereinfacht.
</p><p>Die C-Control II wird sogar sehr häufig im professionellen Bereich eingesetzt. Durch umfangreiche Programmmodule kann verschiedenste Hardware auf einfachste Weise eingebunden werden. Auch in der Heimautomatisierung ist sie sehr beliebt, da ein Controller ausreichend Ressourcen hat, um hier alles zu steuern bzw. zu regeln.
Bei der Wahl des Controllers spielt oft auch die Ausführungsgeschwindigkeit eine wichtige Rolle. Verschiedene Versuche von Benchmarks haben aber gezeigt, dass ein Geschwindigkeitsvergleich der aktuellen Controller sehr stark von der Anwendung und damit von den vom Controller zur Verfügung gestellten Ressourcen abhängt. Prinzipiell sind die einzelnen C-Control-Familien untereinander nicht direkt vergleichbar, da sich u. a. der Funktionsumfang der einzelnen Betriebssysteme zu stark unterscheidet.
</p><p>Jede C-Control-Variante hat demnach ihre Vor- und Nachteile.
</p>
<div class="mw-heading mw-heading2"><h2 id="Programmierung">Programmierung</h2></div>
<div class="mw-heading mw-heading3"><h3 id="C-Control_I_2">C-Control I</h3></div>
<p>Die für die Programmierung der C-Control I erhältliche C-Control I Software CD von <a href="Conrad_Electronic" title="Conrad Electronic">CONRAD</a> beinhaltet die <a href="Programmiersprache" title="Programmiersprache">Programmiersprachen</a> CCBASIC und BASIC++ (als Hauptbestandteil der Entwicklungsumgebung WorkBench++). Alternativ lässt sich für die C-Control I Version 1.1 auch mBasic, die <a href="C_(Programmiersprache)" title="C (Programmiersprache)">C</a>-ähnlichen Sprache CCCCC oder das für das Open-Control Projekt entwickelte, abwärtskompatible OCBASIC einsetzen.
</p><p>Die C-Control I Version 1.1 kann außerdem in <a href="Assemblersprache" title="Assemblersprache">Assembler</a> programmiert werden. Für die C-Control I M-Unit 2.0 und C-Control Micro wird allerdings ein spezieller Assembler namens CCASM benötigt, da sich nur mit CCASM signierte Programme auf den neuen C-Controls starten lassen.
</p>
<div class="mw-highlight mw-highlight-lang-text mw-content-ltr" dir="ltr"><pre><span></span> Main() ' Das ist ein Kommentar
FUNCTION Main()
DEFINE i AS BYTE
DEFINE MeinString AS STRING * 10
LCD.INIT
LCD.CLEAR
FOR i = 1 TO 10
MeinString = "Wert von i = " & STR(i)
LCD.PRINT MeinString
NEXT i
LCD.OFF
END FUNCTION
</pre></div>
<p><i>C-Control-I-Version-2.0-Beispiel in BASIC++ mit dynamischen Strings und LC-Display-Ausgabe</i>
</p>
<div class="mw-heading mw-heading3"><h3 id="C-Control_II_2">C-Control II</h3></div>
<p>Die Programmierung der leistungsstärkeren C-Control II erfolgt dagegen mit der Programmiersprache C2.
Allerdings können hier auch <a href="Assemblersprache" title="Assemblersprache">Assemblerroutinen</a> leicht eingebunden werden.
Auch ein direktes Programmieren der C-Control II ohne Betriebssystem ist ohne weiteres möglich.
Das Betriebssystem kann jederzeit wieder neu aufgespielt werden.
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="kr">thread</span><span class="w"> </span><span class="n">main</span>
<span class="w"> </span><span class="p">{</span><span class="n">byte</span><span class="w"> </span><span class="n">second</span><span class="p">;</span>
<span class="w"> </span><span class="n">stports</span><span class="p">.</span><span class="n">init</span><span class="p">();</span>
<span class="w"> </span><span class="n">stports</span><span class="p">.</span><span class="n">LCDlight</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="w"> </span><span class="n">lcdext</span><span class="p">.</span><span class="n">init</span><span class="p">();</span>
<span class="w"> </span><span class="n">lcdext</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"Hello World"</span><span class="p">);</span>
<span class="w"> </span><span class="n">second</span><span class="o">=</span><span class="n">system</span><span class="p">.</span><span class="n">second</span><span class="p">();</span>
<span class="w"> </span><span class="n">loop</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">lcdext</span><span class="p">.</span><span class="n">line</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
<span class="w"> </span><span class="n">lcdext</span><span class="p">.</span><span class="n">time</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<span class="w"> </span><span class="n">stports</span><span class="p">.</span><span class="n">togLED</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="w"> </span><span class="n">sleep</span><span class="w"> </span><span class="mi">490</span><span class="p">;</span>
<span class="w"> </span><span class="n">stports</span><span class="p">.</span><span class="n">togLED</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="w"> </span><span class="n">wait</span><span class="w"> </span><span class="n">system</span><span class="p">.</span><span class="n">second</span><span class="p">()</span><span class="o">!=</span><span class="n">second</span><span class="p">;</span><span class="w"> </span><span class="c1">//Auf Sekundenwechsel warten</span>
<span class="w"> </span><span class="n">second</span><span class="o">=</span><span class="n">system</span><span class="p">.</span><span class="n">second</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
</pre></div>
<p><i>C2-Beispiel mit LC-Display-Ausgabe bei einer C-Control-II-Station (Uhr mit im Sekundentakt blinkender LED)</i>
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="kr">thread</span><span class="w"> </span><span class="n">main</span>
<span class="w"> </span><span class="p">{</span><span class="n">byte</span><span class="w"> </span><span class="n">second</span><span class="p">;</span>
<span class="w"> </span><span class="n">lcdext</span><span class="p">.</span><span class="n">init</span><span class="p">();</span>
<span class="w"> </span><span class="n">lcdext</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"Hello World"</span><span class="p">);</span>
<span class="w"> </span><span class="n">second</span><span class="o">=</span><span class="n">system</span><span class="p">.</span><span class="n">second</span><span class="p">();</span>
<span class="w"> </span><span class="n">loop</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">lcdext</span><span class="p">.</span><span class="n">line</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
<span class="w"> </span><span class="n">lcdext</span><span class="p">.</span><span class="n">time</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span><span class="w"> </span><span class="c1">//Aktuelle Zeit ausgeben Format: 2=hh:mm:ss</span>
<span class="w"> </span><span class="n">sleep</span><span class="w"> </span><span class="mi">500</span><span class="p">;</span>
<span class="w"> </span><span class="n">lcdext</span><span class="p">.</span><span class="k">goto</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">);</span>
<span class="w"> </span><span class="n">lcdext</span><span class="p">.</span><span class="n">put</span><span class="p">(</span><span class="sc">' '</span><span class="p">);</span><span class="w"> </span><span class="c1">//Doppelpunkt mit Leerzeichen überschreiben</span>
<span class="w"> </span><span class="n">lcdext</span><span class="p">.</span><span class="k">goto</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">);</span>
<span class="w"> </span><span class="n">lcdext</span><span class="p">.</span><span class="n">put</span><span class="p">(</span><span class="sc">' '</span><span class="p">);</span>
<span class="w"> </span><span class="n">wait</span><span class="w"> </span><span class="n">system</span><span class="p">.</span><span class="n">second</span><span class="p">()</span><span class="o">!=</span><span class="n">second</span><span class="p">;</span><span class="w"> </span><span class="c1">//Auf Sekundenwechsel warten</span>
<span class="w"> </span><span class="n">second</span><span class="o">=</span><span class="n">system</span><span class="p">.</span><span class="n">second</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
</pre></div>
<p><i>C2-Beispiel mit LC-Display-Ausgabe bei einer C-Control-II-Unit mit externem LCD (Uhr mit im Sekundentakt blinkendem Doppelpunkt)</i>
</p>
<div class="mw-heading mw-heading3"><h3 id="C-Control_Pro_2">C-Control Pro</h3></div>
<p>Die C-Control Pro enthält wie die C-Control I & II einen vorinstallierten Tokeninterpreter, welcher bei einem Programmdownload ggf. automatisch aktualisiert wird. Im Gegensatz zur C-Control I können die Token nicht nur aus einem BASIC-, sondern auch aus einem C-Quelltext kompiliert werden, und das sogar gemischt. Allerdings ist die C-Control Pro im Gegensatz zur B-Control, welche ebenfalls auf ATmega-Mikrocontrollern basiert, nicht kompatibel zur C-Control I.
</p>
<div class="mw-highlight mw-highlight-lang-qbasic mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="vg">Dim</span><span class="w"> </span><span class="vg">Text</span><span class="p">(</span><span class="il">9</span><span class="p">)</span><span class="w"> </span><span class="vg">As</span><span class="w"> </span><span class="vg">Char</span><span class="w"> </span><span class="c1">'Char Array</span>
<span class="w"> </span><span class="vg">Dim</span><span class="w"> </span><span class="vg">X</span><span class="w"> </span><span class="vg">As</span><span class="w"> </span><span class="vg">Word</span><span class="w"> </span><span class="c1">'Zählvariable</span>
<span class="w"> </span><span class="vg">LCD_Init</span><span class="p">()</span><span class="w"> </span><span class="c1">'LCD high-level initialisierung</span>
<span class="w"> </span><span class="vg">LCD_ClearLCD</span><span class="p">()</span><span class="w"> </span><span class="c1">'LCD löschen</span>
<span class="w"> </span><span class="vg">LCD_CursorOff</span><span class="p">()</span><span class="w"> </span><span class="c1">'Cursor ausschalten</span>
<span class="w"> </span><span class="vg">Text</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"X:"</span><span class="w"> </span><span class="c1">'String übergeben</span>
<span class="w"> </span><span class="vg">Do</span><span class="w"> </span><span class="vg">While</span><span class="w"> </span><span class="vg">True</span><span class="w"> </span><span class="c1">'Endlosschleife</span>
<span class="w"> </span><span class="vg">LCD_Locate</span><span class="p">(</span><span class="il">1</span><span class="p">,</span><span class="il">1</span><span class="p">)</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="vg">LCD_WriteText</span><span class="p">(</span><span class="vg">Text</span><span class="p">)</span><span class="w"> </span><span class="c1">'Schreibe an Position 1,1 des LCDs das Char Array</span>
<span class="w"> </span><span class="vg">LCD_Locate</span><span class="p">(</span><span class="il">1</span><span class="p">,</span><span class="il">3</span><span class="p">)</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="vg">LCD_WriteWord</span><span class="p">(</span><span class="vg">X</span><span class="p">,</span><span class="il">4</span><span class="p">)</span><span class="w"> </span><span class="c1">'X wird vierstellig an Position 1,3 am LCD ausgegeben</span>
<span class="w"> </span><span class="vg">X</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="vg">X</span><span class="o">+</span><span class="il">1</span><span class="w"> </span><span class="c1">'Zählervariable um eins erhöhen</span>
<span class="w"> </span><span class="vg">AbsDelay</span><span class="p">(</span><span class="il">100</span><span class="p">)</span><span class="w"> </span><span class="c1">'kurze Pause</span>
<span class="w"> </span><span class="vg">End</span><span class="w"> </span><span class="vg">While</span><span class="w"> </span><span class="c1">'Schleifenende</span>
</pre></div>
<p><i>C-Control PRO-Beispielcode, um einen Zählwert in Basic auszugeben</i>
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="n">word</span><span class="w"> </span><span class="n">n</span><span class="p">;</span>
<span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="n">num</span><span class="p">[</span><span class="mi">8</span><span class="p">];</span>
<span class="w"> </span><span class="n">LCD_Init</span><span class="p">();</span><span class="w"> </span><span class="c1">// Display initialisieren</span>
<span class="w"> </span><span class="n">LCD_ClearLCD</span><span class="p">();</span><span class="w"> </span><span class="c1">// Display löschen</span>
<span class="w"> </span><span class="n">LCD_CursorOff</span><span class="p">();</span><span class="w"> </span><span class="c1">// Display Cursor ausschalten</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">n</span><span class="o"><</span><span class="mi">256</span><span class="p">;</span><span class="w"> </span><span class="n">n</span><span class="o">=</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">Str_WriteWord</span><span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="mi">16</span><span class="p">,</span><span class="n">num</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">);</span><span class="c1">// Wort n in ASCII String konvertieren</span>
<span class="w"> </span><span class="n">LCD_CursorPos</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// LCD-Cursor positionieren</span>
<span class="w"> </span><span class="n">LCD_WriteText</span><span class="p">(</span><span class="n">num</span><span class="p">);</span><span class="w"> </span><span class="c1">// String num ausgeben</span>
<span class="w"> </span><span class="n">AbsDelay</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span><span class="w"> </span><span class="c1">// Verzögerung um 100ms</span>
<span class="w"> </span><span class="p">}</span>
</pre></div>
<p><i>Ausgabe auf ein LCD in Compact-C</i>
</p>
<div class="mw-heading mw-heading3"><h3 id="Übersicht_über_die_verwendeten_Programmiersprachen"><span id=".C3.9Cbersicht_.C3.BCber_die_verwendeten_Programmiersprachen"></span>Übersicht über die verwendeten Programmiersprachen</h3></div>
<table class="wikitable sortable">
<tbody><tr>
<th class="unsortable">Programmiersprache
</th>
<th>Zielplattform
</th>
<th>Ausgabe-Format
</th>
<th>Syntax/<a href="Programmierparadigma" title="Programmierparadigma">Paradigma</a>
</th>
<th>Datentypen
</th>
<th><a href="Zeichenkette" title="Zeichenkette">Strings</a>/<a href="Feld_(Datentyp)" class="mw-redirect" title="Feld (Datentyp)">Arrays</a>
</th>
<th><a href="Stapelspeicher" title="Stapelspeicher">Stackverarbeitung</a>
</th>
<th>Einschränkungen
</th></tr>
<tr>
<td>CCBASIC</td>
<td data-sort-value="1.1">C-Control I Version 1.1</td>
<td><a href="Bytecode" title="Bytecode">Bytecode</a>/<a href="Maschinensprache" title="Maschinensprache">Maschinencode</a></td>
<td><a href="BASIC" title="BASIC">BASIC</a> (<a href="Imperative_Programmierung" title="Imperative Programmierung">imperativ</a>)
</td>
<td data-sort-value="16">Byte (8 Bit), Word (16 Bit)</td>
<td>keine</td>
<td>fest</td>
<td>max. 6 kB (ohne DLL-Patch)
</td></tr>
<tr>
<td>CCPLUS</td>
<td data-sort-value="1.1">C-Control I Version 1.1</td>
<td><a href="Bytecode" title="Bytecode">Bytecode</a></td>
<td>grafisch
</td>
<td data-sort-value="16">Byte (8 Bit), Word (16 Bit)</td>
<td>keine</td>
<td>fest</td>
<td>max. 6 kB (ohne DLL-Patch)
</td></tr>
<tr>
<td>CCCCC</td>
<td data-sort-value="1.1">C-Control I Version 1.1</td>
<td><a href="Bytecode" title="Bytecode">Bytecode</a></td>
<td><a href="C_(Programmiersprache)" title="C (Programmiersprache)">C</a> (<a href="Modulare_Programmierung" title="Modulare Programmierung">modular</a>)
</td>
<td data-sort-value="16">Char (8 Bit), Int (16 Bit)</td>
<td>keine</td>
<td>fest</td>
<td>keine
</td></tr>
<tr>
<td>OCBASIC</td>
<td data-sort-value="1.1OC">Open-Control, C-Control I Version 1.1</td>
<td><a href="Bytecode" title="Bytecode">Bytecode</a>/<a href="Maschinensprache" title="Maschinensprache">Maschinencode</a></td>
<td><a href="BASIC" title="BASIC">BASIC</a> (<a href="Modulare_Programmierung" title="Modulare Programmierung">modular</a>)
</td>
<td data-sort-value="16">Byte (8 Bit), Word (16 Bit)</td>
<td>keine</td>
<td>fest</td>
<td>keine
</td></tr>
<tr>
<td>AS05</td>
<td data-sort-value="1.1">C-Control I Version 1.1</td>
<td><a href="Maschinensprache" title="Maschinensprache">Maschinencode</a></td>
<td><a href="Assemblersprache" title="Assemblersprache">Assembler</a> (<a href="Imperative_Programmierung" title="Imperative Programmierung">imperativ</a>)
</td>
<td data-sort-value="8">8 Bit</td>
<td>keine</td>
<td>dynamisch</td>
<td>keine
</td></tr>
<tr>
<td>BASIC++</td>
<td data-sort-value="2.0">C-Control I Version 1.1, C-Control I Version 2.0</td>
<td><a href="Bytecode" title="Bytecode">Bytecode</a></td>
<td><a href="BASIC" title="BASIC">BASIC</a> (<a href="Modulare_Programmierung" title="Modulare Programmierung">modular</a>)
</td>
<td data-sort-value="32">Byte (8 Bit), Word (16 Bit), Float (32 Bit), String (64 Byte)</td>
<td>Strings, (<a href="EEPROM" class="mw-redirect" title="EEPROM">EEPROM</a>-) ChipRam, Arrays</td>
<td>fest (optional dynamisch)</td>
<td>keine
</td></tr>
<tr>
<td>CCASM</td>
<td data-sort-value="2.0">C-Control I Version 2.0</td>
<td><a href="Maschinensprache" title="Maschinensprache">Maschinencode</a> (verschlüsselt)</td>
<td><a href="Assemblersprache" title="Assemblersprache">Assembler</a> (<a href="Imperative_Programmierung" title="Imperative Programmierung">imperativ</a>)
</td>
<td>8 Bit</td>
<td>keine</td>
<td>dynamisch</td>
<td>Code wird autorisiert, kein freier Zugriff auf alle Ressourcen, nur 2 Pages a 248 Bytes möglich
</td></tr>
<tr>
<td>C2</td>
<td data-sort-value="II">C-Control II</td>
<td><a href="Bytecode" title="Bytecode">Bytecode</a>/Wordcode</td>
<td>vereinfachtes <a href="C_(Programmiersprache)" title="C (Programmiersprache)">C</a> (<a href="Modulare_Programmierung" title="Modulare Programmierung">modular</a>)
</td>
<td data-sort-value="64">Byte (8 Bit), Int (16 Bit), Long (32Bit), Float (64 Bit), String (32 Byte)</td>
<td>Strings, Arrays, eigene Datentypen</td>
<td>dynamisch</td>
<td>keine
</td></tr>
<tr>
<td>CompactC</td>
<td data-sort-value="Pro">C-Control Pro</td>
<td><a href="Bytecode" title="Bytecode">Bytecode</a></td>
<td><a href="C_(Programmiersprache)" title="C (Programmiersprache)">C</a> (<a href="Modulare_Programmierung" title="Modulare Programmierung">modular</a>)
</td>
<td data-sort-value="32">Char/Byte (8 Bit), Word/Int (16 Bit), Float (32 Bit)</td>
<td>Strings, Arrays</td>
<td>dynamisch</td>
<td>keine
</td></tr>
<tr>
<td>Basic</td>
<td data-sort-value="Pro">C-Control Pro</td>
<td><a href="Bytecode" title="Bytecode">Bytecode</a></td>
<td><a href="BASIC" title="BASIC">BASIC</a> (<a href="Modulare_Programmierung" title="Modulare Programmierung">modular</a>)
</td>
<td data-sort-value="32">Char/Byte (8 Bit), Word/Int (16 Bit), Single (32 Bit)</td>
<td>Strings, Arrays</td>
<td>dynamisch</td>
<td>keine
</td></tr></tbody></table>
<p>Die unterstützten Datentypen, die Möglichkeit mit Strings und Arrays zu arbeiten und die Stackverarbeitung werden im Wesentlichen durch das auf dem Mikrocontroller implementierte Betriebssystem vorgegeben.
</p>
<div class="mw-heading mw-heading2"><h2 id="Übersicht_technische_Daten"><span id=".C3.9Cbersicht_technische_Daten"></span>Übersicht technische Daten</h2></div>
<table class="wikitable sortable">
<tbody><tr>
<th class="unsortable">Controller
</th>
<th>Betriebssystem
</th>
<th>Takt
</th>
<th>Programmspeicher
</th>
<th>ASM-Speicher
</th>
<th>Datenspeicher
</th>
<th>User-RAM
</th>
<th>I/Os*
</th>
<th>ADC
</th>
<th>Referenzspannung
</th>
<th>PWM
</th></tr>
<tr>
<td>C-Control I Version 1.1</td>
<td>Single-Threading</td>
<td>2 MHz</td>
<td>8 kB</td>
<td>0,249 kB
</td>
<td>8 kB (=Programmspeicher)</td>
<td>24 Byte</td>
<td>35</td>
<td>8 Bit</td>
<td>2,5 V – 5,0 V</td>
<td>2
</td></tr>
<tr>
<td>C-Control I Version 1.2</td>
<td>Single-Threading</td>
<td>2 MHz</td>
<td>9,5 kB</td>
<td>0,5 kB (=Programmspeicher)
</td>
<td>9,5 kB (=Programmspeicher)</td>
<td>64 Byte</td>
<td>29</td>
<td>8 Bit</td>
<td>5,0 V</td>
<td>2
</td></tr>
<tr>
<td>C-Control I Version 2.0</td>
<td>Single-Threading</td>
<td>8 MHz</td>
<td>9,5 kB</td>
<td>0,5 kB (=Programmspeicher)
</td>
<td>9,5 kB (=Programmspeicher)</td>
<td>140 Byte</td>
<td>29</td>
<td>8 Bit</td>
<td>5,0 V</td>
<td>2
</td></tr>
<tr>
<td>C-Control I Version 2.0 Advanced</td>
<td>Single-Threading</td>
<td>8 MHz</td>
<td>22 kB</td>
<td>0,5 kB (=Programmspeicher)
</td>
<td>22 kB (=Programmspeicher)</td>
<td>240 Byte</td>
<td>29</td>
<td>8 Bit</td>
<td>5,0 V</td>
<td>2
</td></tr>
<tr>
<td>C-Control I Micro</td>
<td>Single-Threading</td>
<td>3,2 MHz</td>
<td>2 kB</td>
<td>0,5 kB (=Programmspeicher)
</td>
<td>–</td>
<td>24 Byte</td>
<td>6(5)</td>
<td>8 Bit</td>
<td>5,0 V</td>
<td>–
</td></tr>
<tr>
<td>Open-Maxi</td>
<td>Single-Threading</td>
<td>20 MHz (1,25 MHz)</td>
<td>57,4 kB</td>
<td>57,4 kB (=Programmspeicher)
</td>
<td>32 kB (I²C-EEPROM)</td>
<td>1800 Byte (512 Byte)</td>
<td>52</td>
<td>10 Bit</td>
<td>2,7 – 5,0 V</td>
<td>2(8)
</td></tr>
<tr>
<td>C-Control II</td>
<td>Multithreading (max. 255 Threads)</td>
<td>20 MHz</td>
<td>128 kB + 128 kB Const.</td>
<td>192 kB
</td>
<td>128 kB (192 kB)</td>
<td data-sort-value="65536">64 kB</td>
<td>34</td>
<td>10 Bit</td>
<td>4,096 V</td>
<td>3
</td></tr>
<tr>
<td>C164CI-Controller-Board</td>
<td>Multithreading (max. 255 Threads)</td>
<td>20 MHz</td>
<td>128 kB + 128 kB Const.</td>
<td>192 kB
</td>
<td>128 kB (192 kB)</td>
<td data-sort-value="65536">128 kB</td>
<td>34</td>
<td>10 Bit</td>
<td>4,096 V</td>
<td>3
</td></tr>
<tr>
<td>C-Control Pro Mega 32</td>
<td>Multithreading (max. 16 Threads)</td>
<td>14,7456 MHz</td>
<td>15 kB</td>
<td>–
</td>
<td>1 kB</td>
<td data-sort-value="2048">2 kB</td>
<td>30</td>
<td>10 Bit</td>
<td>2,5 V – 5,0 V</td>
<td>2
</td></tr>
<tr>
<td>C-Control Pro Mega 128</td>
<td>Multithreading (max. 16 Threads)</td>
<td>14,7456 MHz</td>
<td>110 kB</td>
<td>–
</td>
<td>2 kB</td>
<td data-sort-value="2662">2,6 kB</td>
<td>51(32)</td>
<td>10 Bit</td>
<td>2,5 V – 5,0 V</td>
<td>3
</td></tr></tbody></table>
<p>* Anmerkungen zu den I/Os:<br>
Es wurden alle I/O-Ports inkl. AD-Ports und Sonderfunktionen berücksichtigt, die aus dem Anwenderprogramm bedient werden können.
Das schließt auch Host-, Starttaster, (nutzbare) Status-LEDs und I²C-Bus ein.
Ports für RxD und TxD der (ersten) <a href="RS-232" title="RS-232">RS-232</a> wurden nicht mitgezählt, ebenso die Ports für den <a href="CAN-Bus" class="mw-redirect" title="CAN-Bus">CAN-Bus</a> der C-Control II.
Für die C-Control Pro 128 wurde der Wert der nutzbaren I/Os bei Nutzung einer externen RAM-Erweiterung in Klammern geschrieben.
</p>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<p>Die C-Control zeichnet sich durch ein großes Angebot an deutschsprachiger Literatur aus. Die zahlreichen Bücher und Internetseiten greifen dabei sowohl Themen für Anfänger als auch Fortgeschrittene auf.
</p>
<div class="mw-heading mw-heading3"><h3 id="Literaturliste">Literaturliste</h3></div>
<p>Sortiert nach Erscheinungsdatum:
</p>
<div class="mw-heading mw-heading4"><h4 id="C-Control_I_Version_1.1">C-Control I Version 1.1</h4></div>
<ul><li><a href="Burkhard_Kainka" title="Burkhard Kainka">Burkhard Kainka</a>: <i>Messen, Steuern, Regeln mit dem C-Control/Basic-System.</i> 2. Auflage. Franzis Verlag, Poing 1998, ISBN 3-7723-6734-8.</li>
<li>Burkhard Kainka, Martin Förster: <i>C-Control-Anwendungen.</i> Franzis Verlag, Poing 1998, ISBN 3-7723-5514-5.</li>
<li>B. Kluth, C. Kluth: <i>Erfolgreich automatisieren mit dem C-Control Basic System.</i> Franzis Verlag, Poing 1999, ISBN 3-7723-4984-6.</li>
<li>Burkhard Kainka: <i>Messen, Steuern, Regeln mit dem C-Control/Basic-System.</i> Franzis Verlag, Poing 2000, ISBN 3-7723-6735-6.</li>
<li>Burkhard Kainka: <i>C-Control Hardware-Erweiterungen.</i> Franzis Verlag, Poing 2000, ISBN 3-7723-5705-9.</li>
<li>B. Kluth, C. Kluth: <i>C-Control-Station.</i> Franzis Verlag, Poing 2000, ISBN 3-7723-8165-0.</li></ul>
<div class="mw-heading mw-heading4"><h4 id="C-Control_I_Version_2.0">C-Control I Version 2.0</h4></div>
<ul><li>Stefan Tappertzhofen: <i>Messen, Steuern und Regeln mit C-Control M-Unit 2.</i> 2., aktualisierte Auflage. Franzis Verlag, Poing 2007, ISBN 978-3-7723-5488-5.</li></ul>
<div class="mw-heading mw-heading4"><h4 id="C-Control_II_3">C-Control II</h4></div>
<ul><li>Burkhard Kainka, André Helbig: <i>Messen, Steuern, Regeln mit C-Controll II</i>. Franzis Verlag, Poing 2003, ISBN 3-7723-4054-7.</li></ul>
<div class="mw-heading mw-heading4"><h4 id="C-Control_Pro_3">C-Control Pro</h4></div>
<ul><li>Reiner Schirm, Peter Sprenger: <i>Messen, Steuern und Regeln mit C-Control Pro</i>. Franzis Verlag, Poing 2007, ISBN 978-3-7723-4097-0.</li>
<li>Ulli Sommer: <i>C-Control-Pro – selbst programmieren und in der Praxis einsetzen</i>. Franzis Verlag, Poing 2007, ISBN 978-3-7723-5089-4.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<p>Allgemein
</p>
<ul><li><a rel="nofollow" class="external text" href="http://www.c-control.de/">C-Control-Website</a></li>
<li><a rel="nofollow" class="external text" href="https://www.mikrocontroller.net/articles/C-Control">C-Control</a> im Wiki vom mikrocontroller.net</li></ul>
<p>C-Control I
</p>
<ul><li><a rel="nofollow" class="external text" href="http://www.c-control-support.net/">C-Control I: Support-Website</a></li>
<li><a rel="nofollow" class="external text" href="https://om.dharlos.de/">Open-Control: Support Micro, Mini, Midi, Macro, Maxi</a></li>
<li><a rel="nofollow" class="external text" href="http://www.tappertzhofen.eu/">C-Control I: Programmiersprache Basic++ 2006 (Download, Referenzen, Informationen)</a></li>
<li><a rel="nofollow" class="external text" href="https://ccintern.dharlos.de/">C-Control intern</a> private, unabhängige Informationsquelle für C-Control-1-Anwender</li></ul>
<p>C-Control II
</p>
<ul><li><a rel="nofollow" class="external text" href="https://www.cc2net.de/">C-Control II: aktuelle IDE, aktuelles OS, Service-Pack, Handbuch und weitere Ressourcen</a></li></ul>
<p>C-Control Pro
</p>
<ul><li><a rel="nofollow" class="external text" href="http://www.c-control-pro.de/">C-Control Pro: Online-Dokumentation (C und Basic)</a></li>
<li><a rel="nofollow" class="external text" href="http://www.kurztutorial.info/c-control/inhalt.htm">C-Control Pro: Tutorial</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Hilfeseite auf c-control-pro.de: <a rel="nofollow" class="external text" href="http://www.c-control-pro.de/documentation/index.html?historie.htm">Historie</a></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.spiketronics.com/daten/m12.html"><i>C-Control I BASIC Unit M 1.2</i>.</a> Herstellerseite. Abgerufen am 21. Juli 2011.</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.spiketronics.com/daten/m20diff.html"><i>Unterschied der neuen UNIT M1.2 zur alten M1.1</i>.</a> Herstellerseite. Abgerufen am 21. Juli 2011.</span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-10-19" href="https://de.wikipedia.org/wiki/?title=C-Control&oldid=260742581">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>